--- id: TASK-011 title: 'TUI: Per-panel staleness badge in border title' status: To Do assignee: [] created_date: '2026-06-12 04:21' labels: - tui - feature dependencies: [] priority: low ordinal: 11000 --- ## Description Users currently have no way to know how old the data in a panel is. Add a relative timestamp ("2m ago", "just now", "12m ago") to each `DashPanel`'s `border_title` showing when its source's snapshot was last refreshed. Implementation: - Extract `refreshedAt` from each source's snapshot during `refresh_data()` - Pass it to `DashPanel` alongside the content (e.g. `set_content(text, refreshed_at=dt)`) - `DashPanel` updates `border_title = f"{self._title} {relative_time(refreshed_at)}"` - Add a lightweight 60s timer that re-renders titles in place (just the relative time strings) without re-fetching data - `relative_time(dt)` → "just now" (<2m), "Xm ago" (<1h), "Xh ago" (≥1h) ## Acceptance Criteria - [ ] #1 Each panel border shows relative age of its data - [ ] #2 Timestamps update every minute without re-fetching - [ ] #3 Panels without a snapshot (not configured) show no timestamp